home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / librw / RWTPtrHashMultiSet.z / RWTPtrHashMultiSet
Encoding:
Text File  |  2002-10-03  |  24.9 KB  |  595 lines

  1.  
  2.  
  3.  
  4. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))
  5.  
  6.  
  7.  
  8. NNNNaaaammmmeeee
  9.      RWTPtrHashMultiSet<T,H,EQ> - Rogue Wave library class
  10.  
  11. SSSSyyyynnnnooooppppssssiiiissss
  12.               #include <rw/tphasht.h>
  13.  
  14.  
  15.  
  16.               RWTPtrHashMultiSet<T,H,EQ> hmset;
  17.  
  18. PPPPlllleeeeaaaasssseeee NNNNooootttteeee!!!!
  19.      IIIIffff yyyyoooouuuu hhhhaaaavvvveeee tttthhhheeee SSSSttttaaaannnnddddaaaarrrrdddd CCCC++++++++ LLLLiiiibbbbrrrraaaarrrryyyy,,,, uuuusssseeee tttthhhheeee iiiinnnntttteeeerrrrffffaaaacccceeee ddddeeeessssccccrrrriiiibbbbeeeedddd hhhheeeerrrreeee....
  20.      OOOOtttthhhheeeerrrrwwwwiiiisssseeee,,,, uuuusssseeee tttthhhheeee iiiinnnntttteeeerrrrffffaaaacccceeee ffffoooorrrr RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhTTTTaaaabbbblllleeee described in Appendix A.
  21.  
  22.  
  23. DDDDeeeessssccccrrrriiiippppttttiiiioooonnnn
  24.      This class maintains a pointer-based collection of values, which are
  25.      stored according to a hash object of type HHHH.  Class TTTT is the type pointed
  26.      to by the items in the collection.  HHHH must provide a hash function on
  27.      elements of type TTTT via a public member
  28.  
  29.                  unsigned long operator()(const T& x)
  30.  
  31.  
  32.  
  33.  
  34.  
  35.      Objects within the collection will be grouped together based on an
  36.      equality object of type EEEEQQQQ.  EEEEQQQQ must ensure this grouping via public
  37.      member
  38.  
  39.                  bool operator()(const T& x, const T& y)
  40.  
  41.  
  42.  
  43.  
  44.  
  45.      which should return ttttrrrruuuueeee if xxxx and yyyy are equivalent, ffffaaaallllsssseeee otherwise.
  46.      RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt<<<<TTTT,,,,HHHH,,,,EEEEQQQQ>>>> may contain multiple items that compare equal
  47.      to each other.  (RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhSSSSeeeetttt<<<<TTTT,,,,HHHH,,,,EEEEQQQQ>>>> will not accept an item that
  48.      compares equal to an item already in the collection.)
  49.  
  50. PPPPeeeerrrrssssiiiisssstttteeeennnncccceeee
  51.      Isomorphic
  52.  
  53. EEEExxxxaaaammmmpppplllleeeessss
  54.               //
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))
  71.  
  72.  
  73.  
  74.               // tphasht.cpp
  75.           //
  76.           #include <rw/tphasht.h>
  77.           #include <rw/cstring.h>
  78.           #include <iostream.h>
  79.           struct silly_hash{
  80.              unsigned long operator()(RWCString x) const
  81.              { return x.length() * (long)x(0); }
  82.           };
  83.           main(){
  84.           RWTPtrHashMultiSet<RWCString,silly_hash,equal_to<RWCString> > set1;
  85.           RWTPtrHashMultiSet<RWCString,silly_hash,equal_to<RWCString> > set2;
  86.            set1.insert(new RWCString("one"));
  87.            set1.insert(new RWCString("two"));
  88.            set1.insert(new RWCString("three"));
  89.            set1.insert(new RWCString("one"));  // OK: duplicates allowd
  90.            cout << set1.entries() << endl;    // Prints "4"
  91.            set2 = set1;
  92.            cout << ((set1.isEquivalent(set2)) ? "TRUE" : "FALSE") << endl;
  93.            // Prints "TRUE"
  94.            set2.difference(set1);
  95.            set1.clearAndDestroy();
  96.            cout << set1.entries() << endl;    // Prints "0"
  97.            cout << set2.entries() << endl;    // Prints "0"
  98.            return 0;
  99.           }
  100.  
  101. RRRReeeellllaaaatttteeeedddd CCCCllllaaaasssssssseeeessss
  102.      Class RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhSSSSeeeetttt<<<<TTTT,,,,HHHH,,,,EEEEQQQQ>>>> offers the same interface to a pointer-based
  103.      collection that will not accept multiple items that compare equal to each
  104.      other. Class rrrrwwww____hhhhaaaasssshhhhmmmmuuuullllttttiiiisssseeeetttt<<<<TTTT****,rrrrwwww____ddddeeeerrrreeeeffff____hhhhaaaasssshhhh<<<<HHHH,,,,TTTT>>>>,,,,rrrrwwww____ddddeeeerrrreeeeffff____ccccoooommmmppppaaaarrrreeee<<<<EEEEQQQQ,,,,TTTT>>>>
  105.      >>>> is the C++-standard collection that serves as the underlying
  106.      implementation for RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt<<<<TTTT,,,,HHHH,,,,EEEEQQQQ>>>>.
  107.  
  108. PPPPuuuubbbblllliiiicccc TTTTyyyyppppeeeeddddeeeeffffssss
  109.               typedef rw_deref_compare<EQ,T>                 container_eq;
  110.           typedef rw_deref_hash<H,T>                     container_hash;
  111.           typedef rw_hashmultiset<T*,container_hash,container_eq>
  112.                                                          container_type;
  113.           typedef container_type::size_type              size_type;
  114.           typedef container_type::difference_type        difference_type;
  115.           typedef container_type::iterator               iterator;
  116.           typedef container_type::const_iterator         const_iterator;
  117.           typedef T*                                     value_type;
  118.           typedef T* const&                              reference;
  119.           typedef T* const&                              const_reference;
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))
  137.  
  138.  
  139.  
  140. PPPPuuuubbbblllliiiicccc CCCCoooonnnnssssttttrrrruuuuccccttttoooorrrrssss
  141.               RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt<<<<TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  142.           (size_type sz=1024,const H& h = H(),const EQ& eq = EQ());
  143.  
  144.  
  145.      Constructs an empty multi set.  The hash table representation used by
  146.      self multi-set will have sssszzzz buckets, use hhhh as a hashing function and eeeeqqqq
  147.      to test for equality between stored elements.
  148.  
  149.               RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt<<<<TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  150.           (const RWTPtrHashMultiSet<T,H,EQ>& rws);
  151.  
  152.  
  153.      Copy constructor.
  154.  
  155.               RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt<<<<TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  156.           (const rw_hashmultiset<T*,container_hash, container_eq>& s);
  157.  
  158.  
  159.      Constructs a hashed multi-set, copying all element from ssss.
  160.  
  161.               RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt<<<<TTTT,,,,HHHH,,,,EEEEQQQQ>>>>
  162.           (const H& h,size_type sz = RWDEFAULT_CAPACITY);
  163.  
  164.  
  165.      This TTTToooooooollllssss....hhhh++++++++ 6.xstyle constructor creates an empty hashed multi-set
  166.      which uses the hash object hhhh and has an initial hash table capacity of
  167.      sssszzzz.
  168.  
  169.               RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt<<<<TTTT,,,,HHHH,,,,EEEEQQQQ>>>>(T*const* first,T*const* last,
  170.           size_type sz=1024,const H& h = H(),const EQ& eq = EQ());
  171.  
  172.  
  173.      Constructs a set by copying elements from the array of TTTT****s pointed to by
  174.      ffffiiiirrrrsssstttt, up to, but not including, the element pointed to by llllaaaasssstttt.  The
  175.      hash table representation used by self multi-set will have sssszzzz buckets,
  176.      use hhhh as a hashing function and eeeeqqqq to test for equality between stored
  177.      elements.
  178.  
  179. PPPPuuuubbbblllliiiicccc MMMMeeeemmmmbbbbeeeerrrr OOOOppppeeeerrrraaaattttoooorrrrssss
  180.               RWTPtrHashMultiSet<T,H,EQ>&
  181.           ooooppppeeeerrrraaaattttoooorrrr====(const RWTPtrHashMultiSet<T,H,EQ>& s);
  182.  
  183.  
  184.      Clears all elements of self and replaces them by copying all elements of
  185.      ssss....
  186.  
  187.               bool
  188.           ooooppppeeeerrrraaaattttoooorrrr========(const RWTPtrHashMultiSet<T,H,EQ>& s) const;
  189.  
  190.  
  191.      Returns ttttrrrruuuueeee if self compares equal to ssss, otherwise returns ffffaaaallllsssseeee.  Two
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))
  203.  
  204.  
  205.  
  206.      collections are equal if both have the same number of entries, and
  207.      iterating through both collections produces, in turn, individual elements
  208.      that compare equal to each other.  Elements are dereferenced before being
  209.      compared.
  210.  
  211. PPPPuuuubbbblllliiiicccc MMMMeeeemmmmbbbbeeeerrrr FFFFuuuunnnnccccttttiiiioooonnnnssss
  212.               void
  213.           aaaappppppppllllyyyy(void (*fn)(const T*,void*), void* d) const;
  214.  
  215.  
  216.      Applies the user-defined function pointed to by ffffnnnn to every item in the
  217.      collection.  self function must have prototype:
  218.  
  219.                  void yourfun(const T* a, void* d);
  220.  
  221.  
  222.  
  223.  
  224.  
  225.      Client data may be passed through parameter dddd.
  226.  
  227.               iterator
  228.           bbbbeeeeggggiiiinnnn();
  229.           const_iterator
  230.           bbbbeeeeggggiiiinnnn() const;
  231.  
  232.  
  233.      Returns an iterator positioned at the first element of self.
  234.  
  235.               size_type
  236.           ccccaaaappppaaaacccciiiittttyyyy() const;
  237.  
  238.  
  239.      Returns the number of buckets(slots) available in the underlying hash
  240.      representation.  See rrrreeeessssiiiizzzzeeee below.
  241.  
  242.               void
  243.           cccclllleeeeaaaarrrr();
  244.  
  245.  
  246.      Clears the collection by removing all items from self.
  247.  
  248.               void
  249.           cccclllleeeeaaaarrrrAAAAnnnnddddDDDDeeeessssttttrrrrooooyyyy();
  250.  
  251.  
  252.      Removes all items from the collection and uses ooooppppeeeerrrraaaattttoooorrrr ddddeeeelllleeeetttteeee to destroy
  253.      the objects pointed to by those items.  Do not use self method if
  254.      multiple pointers to the same object are stored.
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))
  269.  
  270.  
  271.  
  272.               bool
  273.           ccccoooonnnnttttaaaaiiiinnnnssss(const T* a) const;
  274.  
  275.  
  276.      Returns ttttrrrruuuueeee if there exists an element tttt in self that compares equal to
  277.      ****aaaa, otherwise returns ffffaaaallllsssseeee.
  278.  
  279.               bool
  280.           ccccoooonnnnttttaaaaiiiinnnnssss(bool (*fn)(const T*,void*), void* d) const;
  281.  
  282.  
  283.      Returns ttttrrrruuuueeee if there exists an element tttt in self such that the
  284.      expression ((((((((****ffffnnnn))))((((tttt,,,,dddd)))))))) is ttttrrrruuuueeee, otherwise returns ffffaaaallllsssseeee.  ffffnnnn points to a
  285.      user-defined tester function which must have prototype:
  286.  
  287.                  bbbboooooooollll yyyyoooouuuurrrrTTTTeeeesssstttteeeerrrr((((ccccoooonnnnsssstttt TTTT**** aaaa,,,, vvvvooooiiiidddd**** dddd))));;;;
  288.  
  289.  
  290.  
  291.  
  292.  
  293.      Client data may be passed through parameter dddd.
  294.  
  295.               void
  296.           ddddiiiiffffffffeeeerrrreeeennnncccceeee(const RWTPtrHashMultiSet<T,H,EQ>& s);
  297.  
  298.  
  299.      Sets self to the set-theoretic difference given by ((((sssseeeellllffff ---- ssss)))).  Elements
  300.      from each set are dereferenced before being compared.
  301.  
  302.               iterator
  303.           eeeennnndddd();
  304.           const_iterator
  305.           eeeennnndddd() const;
  306.  
  307.  
  308.      Returns an iterator positioned "just past" the last element in self.
  309.  
  310.               size_type
  311.           eeeennnnttttrrrriiiieeeessss() const;
  312.  
  313.  
  314.      Returns the number of items in self.
  315.  
  316.               float
  317.           ffffiiiillllllllRRRRaaaattttiiiioooo() const;
  318.  
  319.  
  320.      Returns the ratio eeeennnnttttrrrriiiieeeessss(((())))/ccccaaaappppaaaacccciiiittttyyyy(((()))).
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))
  335.  
  336.  
  337.  
  338.               const T*
  339.           ffffiiiinnnndddd(const T* a) const;
  340.  
  341.  
  342.      If there exists an element tttt in self that compares equal to ****aaaa, returns
  343.      tttt.  Otherwise, returns rrrrwwwwnnnniiiillll.
  344.  
  345.               const T*
  346.           ffffiiiinnnndddd(bool (*fn)(const T*,void*), void* d) const;
  347.  
  348.  
  349.      If there exists an element tttt in self such that the expression
  350.      ((((((((****ffffnnnn))))((((tttt,,,,dddd)))))))) is ttttrrrruuuueeee, returns tttt.  Otherwise, returns rrrrwwwwnnnniiiillll.  ffffnnnn points to
  351.      a user-defined tester function which must have prototype:
  352.  
  353.                  bbbboooooooollll yyyyoooouuuurrrrTTTTeeeesssstttteeeerrrr((((ccccoooonnnnsssstttt TTTT**** aaaa,,,, vvvvooooiiiidddd**** dddd))));;;;
  354.  
  355.  
  356.  
  357.  
  358.  
  359.      Client data may be passed through parameter dddd.
  360.  
  361.               bool
  362.           iiiinnnnsssseeeerrrrtttt(T* a);
  363.  
  364.  
  365.      Adds the item aaaa to the collection.  Returns ttttrrrruuuueeee.
  366.  
  367.               void
  368.           iiiinnnntttteeeerrrrsssseeeeccccttttiiiioooonnnn(const RWTPtrHashMultiSet<T,H,EQ>& s);
  369.  
  370.  
  371.      Destructively performs a set theoretic intersection of self and ssss,
  372.      replacing the contents of self with the result.
  373.  
  374.               bool
  375.           iiiissssEEEEmmmmppppttttyyyy() const;
  376.  
  377.  
  378.      Returns ttttrrrruuuueeee if there are no items in the collection, ffffaaaallllsssseeee otherwise.
  379.  
  380.               bool
  381.           iiiissssEEEEqqqquuuuiiiivvvvaaaalllleeeennnntttt(const RWTPtrHashMultiSet<T,H,EQ>& s) const;
  382.  
  383.  
  384.      Returns ttttrrrruuuueeee if there is set equivalence between self and ssss; returns
  385.      ffffaaaallllsssseeee otherwise.
  386.  
  387.               bool
  388.           iiiissssPPPPrrrrooooppppeeeerrrrSSSSuuuubbbbsssseeeettttOOOOffff(const RWTPtrHashMultiSet<T,H,EQ>& s) const;
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))
  401.  
  402.  
  403.  
  404.      Returns ttttrrrruuuueeee if self is a proper subset of ssss; returns  ffffaaaallllsssseeee otherwise.
  405.  
  406.               bool
  407.           iiiissssSSSSuuuubbbbsssseeeettttOOOOffff(const RWTPtrHashMultiSet<T,H,EQ>& s) const;
  408.  
  409.  
  410.      Returns ttttrrrruuuueeee if self is a subset of ssss or if self is set equivalent to ssss,
  411.      ffffaaaallllsssseeee otherwise.
  412.  
  413.               size_type
  414.           ooooccccccccuuuurrrrrrrreeeennnncccceeeessssOOOOffff(const T* a) const;
  415.  
  416.  
  417.      Returns the number of elements tttt in self that compare equal to ****aaaa.
  418.  
  419.               size_type
  420.           ooooccccccccuuuurrrrrrrreeeennnncccceeeessssOOOOffff(bool (*fn)(const T*,void*), void* d) const;
  421.  
  422.  
  423.      Returns the number of elements tttt in self such that the
  424.      expression((((((((****ffffnnnn))))((((tttt,,,,dddd)))))))) is ttttrrrruuuueeee.  ffffnnnn points to a user-defined tester
  425.      function which must have prototype:
  426.  
  427.                  bool yourTester(const T* a, void* d);
  428.  
  429.  
  430.  
  431.  
  432.  
  433.      Client data may be passed through parameter dddd.
  434.  
  435.               T*
  436.           rrrreeeemmmmoooovvvveeee(const T* a);
  437.  
  438.  
  439.      Removes and returns the first element tttt in self that compares equal to
  440.      ****aaaa.  Returns rrrrwwwwnnnniiiillll if there is no such element.
  441.  
  442.               T*
  443.           rrrreeeemmmmoooovvvveeee(bool (*fn)(const T*,void*), void* d);
  444.  
  445.  
  446.      Removes and returns the first element tttt in self such that the expression
  447.      ((((((((****ffffnnnn))))((((tttt,,,,dddd)))))))) is ttttrrrruuuueeee.  Returns rrrrwwwwnnnniiiillll if there is no such element.  ffffnnnn
  448.      points to a user-defined tester function which must have prototype:
  449.  
  450.                  bool yourTester(const T* a, void* d);
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))
  467.  
  468.  
  469.  
  470.  
  471.  
  472.      Client data may be passed through parameter dddd.
  473.  
  474.               size_type
  475.           rrrreeeemmmmoooovvvveeeeAAAAllllllll(const T* a);
  476.  
  477.  
  478.      Removes all elements tttt in self that compare equal to ****aaaa.  Returns the
  479.      number of items removed.
  480.  
  481.               size_type
  482.           rrrreeeemmmmoooovvvveeeeAAAAllllllll(bool (*fn)(const T*,void*), void* d);
  483.  
  484.  
  485.      Removes all elements tttt in self such that the expression ((((((((****ffffnnnn))))((((tttt,,,,dddd))))))))is
  486.      ttttrrrruuuueeee.  Returns the number of items removed.  ffffnnnn points to a user-defined
  487.      tester function which must have prototype:
  488.  
  489.                  bool yourTester(const T* a, void* d);
  490.  
  491.  
  492.  
  493.  
  494.  
  495.      Client data may be passed through parameter dddd.
  496.  
  497.               void
  498.           rrrreeeessssiiiizzzzeeee(size_type sz);
  499.  
  500.  
  501.      Changes the capacity of self by creating a new hashed multi-set with a
  502.      capacity of  sssszzzz .  rrrreeeessssiiiizzzzeeee copies every element of self into the new
  503.      container and finally swaps the internal representation of the new
  504.      container with the internal representation of sssseeeellllffff.
  505.  
  506.               rw_hashset<T*,container_hash,container_eq>&
  507.           ssssttttdddd();
  508.           const rw_hashset<T*,container_hash,container_eq>&
  509.           ssssttttdddd() const;
  510.  
  511.  
  512.      Returns a reference to the underlying C++-standard collection that serves
  513.      as the implementation for self.
  514.  
  515.               void
  516.           ssssyyyymmmmmmmmeeeettttrrrriiiiccccDDDDiiiiffffffffeeeerrrreeeennnncccceeee(const RWTPtrHashMultiSet<T,H,EQ>& rhs);
  517.  
  518.  
  519.      Destructively performs a set theoretic symmetric difference operation on
  520.      self and rrrrhhhhssss.  Self is replaced by the result. A symmetric difference can
  521.      be informally defined as (A_B)-(A_B).
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))                              RRRRWWWWTTTTPPPPttttrrrrHHHHaaaasssshhhhMMMMuuuullllttttiiiiSSSSeeeetttt((((3333CCCC++++++++))))
  533.  
  534.  
  535.  
  536.               void
  537.           UUUUnnnniiiioooonnnn(const RWTPtrHashMultiSet<T,H,EQ>& rhs);
  538.  
  539.  
  540.      Destructively performs a set theoretic union operation on self and rrrrhhhhssss.
  541.      Self is replaced by the result. Note the uppercase "U" in UUUUnnnniiiioooonnnn to avoid
  542.      conflict with the C++ reserved word.
  543.  
  544. RRRReeeellllaaaatttteeeedddd GGGGlllloooobbbbaaaallll OOOOppppeeeerrrraaaattttoooorrrrssss
  545.               RWvostream&
  546.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(RWvostream& strm,
  547.                  const RWTPtrHashMultiSet<T,H,EQ>& coll);
  548.           RWFile&
  549.           ooooppppeeeerrrraaaattttoooorrrr<<<<<<<<(RWFile& strm,
  550.                  const RWTPtrHashMultiSet<T,H,EQ>& coll);
  551.  
  552.  
  553.      Saves the collection ccccoooollllllll onto the output stream ssssttttrrrrmmmm, or a reference to
  554.      it if it has already been saved.
  555.  
  556.               RWvistream&
  557.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWvistream& strm,
  558.                   RWTPtrHashMultiSet<T,H,EQ>& coll);
  559.           RWFile&
  560.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWFile& strm,
  561.                   RWTPtrHashMultiSet<T,H,EQ>& coll);
  562.  
  563.  
  564.      Restores the contents of the collection ccccoooollllllll from the input stream ssssttttrrrrmmmm.
  565.  
  566.               RWvistream&
  567.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWvistream& strm,
  568.                   RWTPtrHashMultiSet<T,H,EQ>*& p);
  569.           RWFile&
  570.           ooooppppeeeerrrraaaattttoooorrrr>>>>>>>>(RWFile& strm,
  571.                    RWTPtrHashMultiSet<T,H,EQ>*& p);
  572.  
  573.  
  574.      Looks at the next object on the input stream ssssttttrrrrmmmm and either creates a
  575.      new collection off the heap and sets pppp to point to it, or sets pppp to point
  576.      to a previously read instance.  If a collection is created off the heap,
  577.      then you are responsible for deleting it.
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.